<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>InfinityJEEEU Java Code Generator</title>
        <link href="../css/default.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script>
    </head>   
    <body>
        <div id="wrapper">
        <div id="header_wide">
    <div id="logo">
        <h1><a href="../html/index.html">无垠式Java通用代码生成器</a></h1>
        <h2><a href="../html/index.html">自2014年起为公众服务</a></h2>
    </div>
    <!-- end div#logo -->
    <!-- end div#menu -->
	</div>
            <!-- end div#header -->
            <div id="page_wide">
                <div id="content_wide">
	<h3>代码生成器技术乱弹五，动词算子浅析</h3>
	<p>无垠式和和平之翼代码生成器统称为动词算子式代码生成器。您是否知道为什么这类型的代码生成器称为动词算子式代码生成器？这里的主要问题是什么是动词算子。我们知道，程序大师们给了一个公式：</p>

	<p>程序=数据结构+算法</p>

	<p>而我可以给一个公式，在动词算子式代码生成器中：</p>

	<p>程序=域对象+动词算子</p>

	<p>也就是说，动词算子在某种程度上是算法的等价物。</p>

	<p>那么，到底什么是动词算子，我的定义是动词算子是一组命名的函数级代码生成器堆栈。也就是说动词算子一旦和相应的域对象结合（如果是单域动词就是一个动词算子和一个域对象结合，如果是双域动词，是一个动词算子和两个域对象结合）。生成的结果是一个完整的方法堆栈包括了指定动词的Dao，DaoImpl，Service，ServiceImpl，Facade和JSButton和JSJsonAction的一系列方法。包括5个java方法和两个JavaScript方法。</p>

	<p>为何如此？答案是标准化，固定化以简化测试，降低通透测试需要的测试量。本质上，函数调用是一张网，一个函数可以调另一个函数。这是叫测试人员抓狂的测试工作量之网。不能这样干否则您的测试人员或者用户会把您吃了。所以我的解决方法是把某个函数固定搭配起来，比如ListAll的Facade方法只能调用LIstAll的ServiceImpl的方法，而ListAll的ServiceImpl也只能调用List All的DaoImpl方法，不知您编写过让人抓狂的方法调用Controller的DoGet方法调用ServiceImpl的listAllStudents方法，ServiceImpl的listAllStudents方法里调用queryAllPuple方法，而页面上的js方法叫另外一个古怪的方法。这是程序员的地狱。在动词算子式代码生成器中，命名是很有规律的。</p>

	<p>世界清静了？没这么简单，曾经，在无垠式代码生成器0.8以前。ListAll里面的方法永远是一致的，一个已经失落的程序员的天堂，为什么？因为有时和技术的绑定的关系。</p>

	<p>在和平之翼代码生成器中，动词算子SearchByFieldsByPage就是一个例子，比如它和student的结合在Facade层称为SearchStudentsByFieldsByPage，但是问题是分页查询，mysql里是limit ? offset ?,参数不对ByPage里是pagenum和pagesize不是这两个参数。所以需要把pagenum和pagesize换成limit和offset。我的解决方案是其dao和daoimpl的方法名是SearchStudentsByFieldsByLimit。一个动词算子的各层的名字不一致了。我也没办法，网状的调用模型在暗笑。</p>
    <p><img src="images/magic_v.png"></p>
  </div>
                <!-- end div#content -->
                <div id="sidebar">
                    <!--ul-->
                    	<!-- Common Navigation Panel for our site -->
						<li id="submenu">
						    <h2>功能菜单</h2>
						    <ul>
						    　	<li><a href="../html/index.html">使用SGS生成代码</a></li>
						        <li><a href="../html/parseexcel.html">使用Excel生成代码</a></li>
						      	<li><a href="luantan_index.html">动词算子式代码生成器简介</a></li>
								<li><a href="luantan_1.html">代码生成器技术乱弹一，多对多关系与双域动词</a></li>
								<li><a href="luantan_2.html">代码生成器技术乱弹二，一对多关系的分析与实现</a></li>
								<li><a href="luantan_3.html">代码生成器技术乱弹三，所有字段搜索的主查询</a></li>
								<li><a href="luantan_4.html">代码生成器技术乱弹四，弹性万能界面</a></li>
								<li><a href="luantan_5.html">代码生成器技术乱弹五，动词算子浅析</a></li>
								<li><a href="luantan_6.html">代码生成器技术乱弹六，编译器在拈花微笑</a></li>
								<li><a href="luantan_7.html">代码生成器技术乱弹七，动词算子式代码生成器的透明性</a></li>
								<li><a href="luantan_8.html">代码生成器技术乱弹八，系统族与笛卡尔空间</a></li>
								<li><a href="luantan_9.html">代码生成器技术乱弹九，代码变变变，代码生成器之度量</a></li>
								<li><a href="luantan_10.html">代码生成器技术乱弹十，动词与多维空间，动词变格理论简述</a></li>
								<li><a href="luantan_11.html">代码生成器技术乱弹十一，伽罗华理论与代码生成器</a></li>
								<li><a href="luantan_12.html">代码生成器技术乱弹十二，步枪，T型车到代码生成器，模板法的工业魔术</a></li>

						    </ul>
						</li>
                    <!--/ul-->
                </div>
                <!-- end div#sidebar -->
                <div style="clear: both; height: 1px"></div>
            </div>
            <!-- Common footer for our site -->
			<div id="footer_wide">
			    <p id="legal">作者：火鸟  电邮:jerry_shen_sjf@qq.com QQ群:277689737<br/>
			    </p>
			</div>
        </div>
        <!-- end div#wrapper -->
</body>
</html>